using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using XNAGameFeatures.Input;

namespace XNAGameFeatures.BasicGame
{
    /// <summary>
    /// Base class for all game object.
    /// </summary>
    public interface IGameObject
    {
        /// <summary>
        /// Draws the game object content.
        /// </summary>
        /// <param name="gameTime">The game time.</param>
        void Draw(GameTime gameTime);

        /// <summary>
        /// Loads the content.
        /// </summary>
        void LoadContent();
        /// <summary>
        /// Unloads the content.
        /// </summary>
        void UnloadContent();

        /// <summary>
        /// Updates the game object content.
        /// </summary>
        /// <param name="gameTime">The game time.</param>
        void Update(GameTime gameTime);
        /// <summary>
        /// Catch all input entry and manage them.
        /// </summary>
        /// <param name="input">The input.</param>
        void HandleInput(InputManager input);
    }
}
